"use strict";
import Vue from 'vue'
// import i18n from '../i18n'
import axios from "axios";
import qs from "qs";
import router from '../router'
import ElementUI from 'element-ui';

// let v = new Vue({i18n});

// 错误信息仅做参考
// let errorMessageText = {
//   '200': v.$t('errorMessageTip.200'),
//   '400': v.$t('errorMessageTip.400'),
//   '401': v.$t('errorMessageTip.401'),
//   '402': v.$t('errorMessageTip.402'),
//   '404': v.$t('errorMessageTip.404'),
//   '406': v.$t('errorMessageTip.406'),
//   '407': v.$t('errorMessageTip.407'),
//   '409': v.$t('errorMessageTip.409'),
//   '410': v.$t('errorMessageTip.410'),
//   '411': v.$t('errorMessageTip.411'),
//   '412': v.$t('errorMessageTip.412'),
//   '416': v.$t('errorMessageTip.416'),
//   '417': v.$t('errorMessageTip.417'),
//   '418': v.$t('errorMessageTip.418'),
//   '419': v.$t('errorMessageTip.419'),
//   '500': v.$t('errorMessageTip.500'),
//   '501': v.$t('errorMessageTip.501'),
//   '502': v.$t('errorMessageTip.502'),
//   '510': v.$t('errorMessageTip.510'),
//   '600': v.$t('errorMessageTip.600'),
//   '700': v.$t('errorMessageTip.700'),
//   '701': v.$t('errorMessageTip.701'),
//   '702': v.$t('errorMessageTip.702'),
//   '703': v.$t('errorMessageTip.703'),
//   '704': v.$t('errorMessageTip.704'),
//   '705': v.$t('errorMessageTip.705'),
//   '706': v.$t('errorMessageTip.706'),
//   '707': v.$t('errorMessageTip.707'),
//   '708': v.$t('errorMessageTip.708'),
//   '709': v.$t('errorMessageTip.709'),
//   '710': v.$t('errorMessageTip.710'),
//   '711': v.$t('errorMessageTip.711'),
//   '800': v.$t('errorMessageTip.800'),
//   '801': v.$t('errorMessageTip.801'),
//   '802': v.$t('errorMessageTip.802'),
//   '803': v.$t('errorMessageTip.803'),
//   '804': v.$t('errorMessageTip.804'),
//   '805': v.$t('errorMessageTip.805'),
//   '806': v.$t('errorMessageTip.806'),
//   '807': v.$t('errorMessageTip.807'),
//   '808': v.$t('errorMessageTip.808'),
//   '809': v.$t('errorMessageTip.809'),
//   '810': v.$t('errorMessageTip.810'),
//   '811': v.$t('errorMessageTip.811'),
// }
// 以下数组内的元素不会提示错误
let responseNoMessage = [{
  url: '/pc/v1/asset/asset',
  status: ['400', '401', '500']
}
  , {
  url: '/pc/v1/asset/amount',
  status: ['400', '401', '500']
}
  , {
  url: '/pc/v1/asset/recharge',
  status: ['400', '401', '500']
}
  , {
  url: '/pc/v1/register/checkPassword',
  status: 'ALL'
}
  , {
  url: '/pc/v1/exchange/trustpage',
  status: ['400', '401', '500']
}
  , {
  url: '/pc/v1/exchange/historypage',
  status: ['400', '401', '500']
}
];
//添加请求拦截器
axios.interceptors.request.use(
  config => {
    const Authorization = window.localStorage.getItem('token');
    // console.log(token)
    // if(!!Authorization){
    //   config.headers.Authorization = Authorization
    //   config.headers.openid = openId
    // }
    config.headers.token = Authorization
    return config;
  },
  error => {
    return Promise.reject(error);
  }

);

//添加响应拦截器

axios.interceptors.response.use(
  response => {
    let flag = responseNoMessage.find(item => {
      // console.log(response.config.url)
      // console.log(item.url)
      if (item.url.indexOf(response.config.url) > -1) {
        // 在数组内，判断status
        if (item.status == 'ALL') {
          return true
        }
        // console.log(item.status.indexOf(String(response.data.status)))
        if (item.status.indexOf(String(response.data.status)) > -1) {
          return true
        } else {
          return false
        }
      }
    })
    // console.log(!flag)
    if (!flag) {
      // 不在数组内，打印错误信息
      if (response.data.code == 252) {
        console.log(252)
      }
    }
    return response;
  },
  error => {
    return Promise.resolve(error.response);
  }
);

// axios.defaults.baseURL = "https://www.xxxx/api";
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.headers.post["X-Requested-With"] = "XMLHttpRequest";
axios.defaults.timeout = 10000;

function checkStatus(response) {
  return new Promise((resolve, reject) => {
    if (response && (response.status === 200 || response.status === 304 || response.status === 400)) {
      resolve(response.data);
    } else {
      reject({
        state: "0",
        message: "网络异常"
      });
    }
  });
}

export default {
  post(url, params, header = {}) {
    let data = qs.stringify(params);
    let headerData = { 'Content-Type': 'application/x-www-form-urlencoded' }
    Object.assign(headerData, header);
    return axios({
      headers: headerData,
      method: "post",
      url,
      data
    }).then(response => {
      return checkStatus(response);
    });
  },
  get(url, params, header = {}) {
    // params = qs.stringify(params);
    return axios({
      method: "get",
      headers: header,
      url,
      params
    }).then(response => {
      return checkStatus(response);
    });
  }
};
